unit PagDuplicataPagarRecordFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, DBCtrls, ActnList, Buttons, ComCtrls, ExtCtrls, MainRecordFr;

type

  { TPagDuplicataPagarRecordFrame }

  TPagDuplicataPagarRecordFrame = class(TMainRecordFrame)
    BaixaBaixa: TAction;
    CancelarBaixa: TAction;
    DBEdit1: TDBEdit;
    DataPagamentoDBedit: TDBEdit;
    JurosDBEdit: TDBEdit;
    GroupBox2: TGroupBox;
    LocalizarBaixa: TAction;
    Label4: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Panel14: TPanel;
    Panel15: TPanel;
    Panel16: TPanel;
    Panel17: TPanel;
    SalvarBaixa: TAction;
    CancelarDupBaixa: TAction;
    FecharBaixa: TAction;
    DuplicataActionList: TActionList;
    NomePessoaDBEDit: TDBEdit;
    IdDuplicataDBEdit: TDBEdit;
    ParcelaDBEdit: TDBEdit;
    IdFornecedorDBEdit: TDBEdit;
    DataVencimentoDBEDit: TDBEdit;
    ToolBar1: TToolBar;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton9: TToolButton;
    Valor: TLabel;
    observacaoDBEdit: TDBMemo;
    Label1: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    status: TDBRadioGroup;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    valor1: TDBText;
    TotalPagoDBedit: TDBText;
    DescontoDBEDit: TDBEdit;
    procedure BaixaBaixaExecute(Sender: TObject);
    procedure CancelarBaixaExecute(Sender: TObject);
    procedure DescontoDBEDitKeyPress(Sender: TObject; var Key: char);
    procedure CancelarDupBaixaExecute(Sender: TObject);
    procedure FecharBaixaExecute(Sender: TObject);
    procedure LocalizarBaixaExecute(Sender: TObject);
    procedure JurosDBEditKeyPress(Sender: TObject; var Key: char);
    procedure SalvarBaixaExecute(Sender: TObject);
    procedure ControlaBotoes();

  private
    { private declarations }
  public
    { public declarations }
  end;

//!Verificar como alterar o Status da duplicata

implementation

uses Initializator, MainFr, DuplicataPagarDM, MainDM;

{ TPagDuplicataPagarRecordFrame }

procedure TPagDuplicataPagarRecordFrame.BaixaBaixaExecute(Sender: TObject);
begin
  // Verifica se o frame possui módulo de dados
  if (DuplicataPagarData <> nil) then
    if (IdDuplicataDBEdit.Text <> '') and (ParcelaDBEdit.Text <> '') then begin
      DuplicataPagarData.Edit();
      ControlaBotoes();
    end;
end;


procedure TPagDuplicataPagarRecordFrame.CancelarBaixaExecute(Sender: TObject);
begin
  //Verifica se o frame possui módulo de dados
  if (DuplicataPagarData <> nil) then
    // Cancela as alterações no DataSet
    DuplicataPagarData.Cancel();
  ControlaBotoes();
end;

procedure TPagDuplicataPagarRecordFrame.DescontoDBEDitKeyPress(Sender: TObject;
  var Key: char);
var
  Desconto: real;
begin
  if (key = #13) then begin
    Desconto := StrToFloatDef(DescontoDBEDit.Text, 0);
    TotalPagoDBedit.Caption := FloatToStr(StrToFloat(valor1.Caption) - Desconto);
  end;
end;

procedure TPagDuplicataPagarRecordFrame.CancelarDupBaixaExecute(Sender: TObject);
begin
{var
  StatusC: string;
begin
  if DuplicataPagarData <> nil then begin
    StatusC := 'C';
    DuplicataPagarData.InsereBaixaDuplicata(IdDuplicataDBEdit.Text,
      ParcelaDBEdit.Text, StatusC);
    ControlaBotoes();
  end;}
end;


procedure TPagDuplicataPagarRecordFrame.FecharBaixaExecute(Sender: TObject);
begin
  TheControl.BackFrame();
end;


procedure TPagDuplicataPagarRecordFrame.LocalizarBaixaExecute(Sender: TObject);
begin
  TheControl.ShowSearchFrame(TMainFrame(DuplicataPagarSearchFrame));
end;

procedure TPagDuplicataPagarRecordFrame.JurosDBEditKeyPress(Sender: TObject;
  var Key: char);
var
  Juros: real;
begin
  if (key = #13) then begin
    Juros := StrToFloatDef(JurosDBEdit.Text, 0);
    TotalPagoDBedit.Caption := FloatToStr(StrToFloat(valor1.Caption) + Juros);
  end;
end;


procedure TPagDuplicataPagarRecordFrame.SalvarBaixaExecute(Sender: TObject);
var
  StatusQ: string;
begin
  StatusQ := 'Q';
  DuplicataPagarData.Post();
  DuplicataPagarData.InsereBaixaDuplicata(IdDuplicataDBEdit.Text,
    ParcelaDBEdit.Text, StatusQ);
  ControlaBotoes();
end;

procedure TPagDuplicataPagarRecordFrame.ControlaBotoes();
var
  I: integer;
begin
  // Desabilita todas as ações
  for I := 0 to RecordActionList.ActionCount - 1 do begin
    TAction(RecordActionList.Actions[I]).Enabled := False;
  end;
  for I := 0 to DuplicataActionList.ActionCount - 1 do begin
    TAction(DuplicataActionList.Actions[I]).Enabled := False;
  end;
  RecordDBNavigator.Enabled := False;
  // Verifica se o frame possui módulo de dados
  if (DuplicataPagarData.DataSetState() = mdsDisable) then begin
    // Se não tiver desabilita todos os componentes
    for I := 0 to Self.ComponentCount - 1 do
      if Self.Components[I] is TControl then
        TControl(Self.Components[I]).Enabled := False;
  end else begin
    // Verifica se o DataSet está em modo de edição e controla habilitação das ações
    if (DuplicataPagarData.DataSetState() in [mdsEditing, mdsInserting]) then begin
      SalvarBaixa.Enabled := True;
      CancelarBaixa.Enabled := True;
      CancelarDupBaixa.Enabled := True;
    end else begin
      LocalizarBaixa.Enabled := True;
      BaixaBaixa.Enabled := True;
      FecharBaixa.Enabled := True;
    end;
  end;
end;


initialization
  {$I pagduplicatapagarrecordfr.lrs}

end.
